#define _CRT_SECURE_NO_WARNINGS 1

//class Date
//{
//public:
//	Date(int year=1, int month=1, int day=1)
//	{
//		_year = year;
//		_month = month; 
//		_day = day;
//	}
//	Date(const Date&d1)
//	{
//		_year = d1._year;
//		_month = d1._month;
//		_day = d1._day;
//	}
//	int GetMonthDay(int year ,int month)
//	{
//		int arr[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
//		if (month == 2 && ((year % 4 == 0 && year%100 != 0) || year % 400 == 0))
//		{
//			return 29;
//		}
//		return arr[month];
//	}
//	Date& operator += (int n)
//	{
//		_day += n;
//		while (_day > GetMonthDay(_year, _month))
//		{
//			_day -= GetMonthDay(_year, _month);
//			_month++;
//			if (_month > 12)
//			{
//				_month = 1;
//				_year++;
//			}
//		}
//		return *this;
//	}
//	Date operator+(int n)
//	{
//		Date tmp(*this);
//		tmp += n;
//		return tmp;
//	}
//	bool operator==(const Date&d1)
//	{
//		return (_year == d1._year) && (_month == d1._month) &&( _day == d1._day);
//	}
//	bool operator!=(const Date& d1)
//	{
//		return !(*this == d1);
//	}
//	int operator-(const Date&d1)
//	{
//		Date tmp(d1);
//		int count = 0;
//		while (*this != tmp)
//		{
//			tmp+= 1;
//			count++;
//		}
//		return count;
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//int main()
//{
//	Date d1(1999, 12, 1);
//	Date d2(2023, 12, 1);
//	cout << d2 - d1 << endl;
//}
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<stdbool.h>
using namespace std;

//int main()
//{
//	int n = 0; scanf("%d", &n);
//	int* arr = (int*)malloc(sizeof(int) * (n + 1));
//	int i = 1;
//	while (i<=n)
//	{
//		scanf("%d",&arr[i]);
//	}
//	getchar();
//
//}
//#include<stdio.h>
//int main()
//{
//	int n = 0; int k = 0;
//	scanf("%d %d", &n, &k);
//	int tmp = n;
//	long long int all = 0;
//	int min = 999;
//	while (tmp)
//	{
//		int a = 0;
//		scanf("%d", &a);
//		all += a;
//		if (min > a)
//		{
//			min = a;
//		}
//		tmp--;
//	}
//	all -= min;
//	if (all < k)
//	{
//		printf("ji le");
//	}
//	else
//	{
//		printf("%lld", all);
//	}
//}
//#include<stdio.h>
//int main()
//{
//	char arr[53] = "zhanjianguniversityofscienceandtechnologyonlinejudge";
//	              
//	int count = 1;
//	int i = 0;
//	while (i<53)
//	{
//		int tmp = count%26;
//		while (tmp > 0)
//		{
//			if (arr[i] == 'z')
//			{
//				arr[i] = 'a';
//			}
//			else
//				arr[i] += 1;
//			tmp--;
//		}
//		count++;
//		i++;
//	}
//	printf("%s", arr);
//}
//#include<stdio.h>
//int main()
//{
//	int a = 0;
//	scanf("%d", &a);
//	int all = 0;
//	while(a)
//	{
//		all += (a - 1) * 3;
//		a--;
//	}
//	printf("%d", all);
//}
#include<stdio.h>
int main()
{
	int x = 0;
	scanf("%d", &x);
	if (x<=1)
	{
		printf("0");
		return 0;
	}
	int a = 2;
	int count = 1;
	while (x>a)
	{
		a *= 2;
		count++;
	}
	int b = x - a / 2;
	printf("%d",count-1+b);
	return 0;
}